package nowcoder.eor;

/**
 *
描述
给定两个有符号32位整数a和b，返回a和b中较大的
示例1
输入：
1,2
复制
返回值：
2

 * https://www.nowcoder.com/practice/d2707eaf98124f1e8f1d9c18ad487f76
 *
 *
 */

public class GetMaxWithoutJudge {
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     * 获取最大值
     * @param a int整型 
     * @param b int整型 
     * @return int整型
     */
    public int getMax (int a, int b) {
        // c的值可能会溢出
        int c = a - b;
        int sa = sign(a);
        int sb = sign(b);
        
        int p = sa ^ sb;
        if (p > 0) {// a,b异号
            return sa == 0 ? a : b;
        }
        
        int sc = sign(c);
        return sc == 0 ? a : b;
    }
    
    /**
     * 获取n的符号位
     * 1 表示负数
     * 0 表示正数
     */
    public int sign(int n) {
        // 无符号右移
        return n >>> 31;
    }
    
    public static void main(String[] args){
        System.out.println("new GetMaxWithoutJudge().getMax() = " + new GetMaxWithoutJudge().getMax(-1000, -100));
    }
    
}